<?php
/**
 * Core_Message
 * 
 * @author naspeh
 * @version $Id: Message.php 661 2008-06-16 10:38:02Z naspeh $
 */
class Core_Message
{
    const TYPE_SUCCESS = 'success';
    const TYPE_NOTICE = 'notice';
    const TYPE_ERROR = 'error';
    const DEFAULT_TYPE = 'success';
    /**
     * Набор сообщений
     *
     * @var array
     */
    protected static $_data = array();
    /**
     * Добавляет сообщение
     *
     * @param string $body
     * @param string $type
     */
    public static function add($body, $type = null)
    {
        $body = (string) $body;
        $type = (string) $type;
        self::$_data[$body] = $type;
    }
    /**
     * Возвращает класс
     *
     * @param string $type
     * @return string
     */
    public static function getClass($type = '')
    {
        $type = (string) $type;
        if ('' === $type) {
            $type = self::DEFAULT_TYPE;
        } 
        $classes = Core_Config::get('messages|classes');
        if (!key_exists($type, $classes)) {
            throw new Core_Exception('badType#' . $type);
        }
        return $classes[$type];
    }
    /**
     * Добавляет сообщения
     *
     * @param array $messages
     */
    public static function adds(array $messages)
    {
        foreach ($messages as $body => $type) {
            if (is_int($body)) {
            	$body = $type;
            	$type = null;
            }
            self::add($body, $type);
        } 
    }
    /**
     * Очистка сообщений
     *
     */
    public static function clear()
    {
        self::$_data = array();
    }
    /**
     * Устанавливает сообщения
     *
     * @param array $messages
     */
    public static function set(array $messages)
    {
        self::clear();
        self::adds($messages);
    }
    /**
     * Возвращает сообщения
     *
     * @return array
     */
    public static function get()
    {
        return self::$_data;
    }
    /**
     * Возвращает флаг существования сообщений
     *
     * @return boolean
     */
    public static function has()
    {
        if (empty(self::$_data)) {
            return false;
        }
        return true;
    }
}